package com.zgkxzx.算法.算数表达式解析;

import java.util.Stack;

/**
 * 创建者   zgkxzx
 * 创建日期 2018/4/30.
 * 功能描述 思想
 * 中缀表达式转换成后缀表达式 无括号的情况
 */
public class Mid2After {

    private String midStr = "";
    private String afterStr = "";

    private Stack<Character> stack = new Stack<>();


    public void runTest(String midStr) {
        System.out.println("中缀表达式是 " + midStr);
        if (midStr == null || "".equals(midStr))
            return;

        /**
         * 如果是数字，直接将数字拼接到字符串上面，
         * 如果是运算符号，那么压入栈里面
         */
        for (char value : midStr.toCharArray()) {
            System.out.println("value " + value + "  " + Integer.valueOf(value));
            if (value >= 48 && value <= 57)
                afterStr += value;
            else {
                stack.push(value);
            }
        }
        /**
         * 将压入栈里面的运算符号弹出
         */
        while (!stack.empty()) {
            afterStr += stack.pop();
        }

        System.out.println("后缀表达式是 " + afterStr);
    }


}
